package jschool.ui.Horario;

import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.Rectangle;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSpinner;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.TitledBorder;

import jschool.tiempo.Dias;
import java.awt.Dimension;

public class PanelAgregarHorario extends JPanel {

	private static final long serialVersionUID = 1L;
	private JLabel lblNombre = null;
	private JTextField txtNombre = null;
	private ButtonGroup grupoBotonesOpcion = null; // @jve:decl-index=0:
	public final static int max = 4;
	public final static int min = 2;
	public final static int valor = 2;
	public final static int incremento = 1;
	public final static Dias[] dias = Dias.values();
	private JFormattedTextField tf = null;
	private JPanel panelDeHorario = null;
	private JToggleButton btnToggleLunes = null;
	private JToggleButton btnToggleMartes = null;
	private JToggleButton btnToggleMiercoles = null;
	private JToggleButton btnToggleJueves = null;
	private JToggleButton btnToggleViernes = null;
	private JToggleButton btnToggleSabado = null;
	private JToggleButton btnToggleDomingo = null;
	private JTabbedPane tbpHorario = null;
	private JPanel panelSeleccionHorario = null;
	private JLabel lblLimite = null;
	private JLabel lblTrabajo = null;
	private JLabel lblDia = null;
	private JLabel lblInicio = null;
	private JLabel lblEntrada = null;
	private JLabel lblSalida = null;
	private int indice = 0;
	private JPanel panelLimitesDeDia = null;
	private Calendar calendar = null; // @jve:decl-index=0:
	private JSpinner spinnerInicioLunes = null;
	private JSpinner spinnerInicioMartes = null;
	private JSpinner spinnerInicioMiercoles = null;
	private JSpinner spinnerInicioJueves = null;
	private JSpinner spinnerInicioViernes = null;
	private JSpinner spinnerInicioSabado = null;
	private JSpinner spinnerInicioDomingo = null;
	private JSpinner spinnerInicioTrabajoLunes = null;
	private JSpinner spinnerFinTrabajoLunes = null;
	private JSpinner spinnerInicioTrabajoMartes = null;
	private JSpinner spinnerFinTrabajoMartes = null;
	private JSpinner spinnerInicioTrabajoMiercoles = null;
	private JSpinner spinnerFinTrabajoMiercoles = null;
	private JSpinner spinnerInicioTrabajoJueves = null;
	private JSpinner spinnerFinTrabajoJueves = null;
	private JSpinner spinnerInicioTrabajoViernes = null;
	private JSpinner spinnerFinTrabajoViernes = null;
	private JSpinner spinnerInicioTrabajoSabado = null;
	private JSpinner spinnerFinTrabajoSabado = null;
	private JSpinner spinnerInicioTrabajoDomingo = null;
	private JSpinner spinnerFinTrabajoDomingo = null;
	private SpinnerDateModel model = null; // @jve:decl-index=0:
	private SpinnerNumberModel modeloNumero = null; // @jve:decl-index=0:
	private JComponent editor = null;
	private Date mayor = null; // @jve:decl-index=0:

	private JPanel panelTrabajo = null;
	private JLabel lblAyda = null;
	private JButton btnAceptar = null;
	private JButton btnCancelar = null;

	private JPanel linea = null;

	public PanelAgregarHorario() {
		super();
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "La Clase no fue Encontrada",
					"Error", JOptionPane.ERROR_MESSAGE, null);
		} catch (InstantiationException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,
					"Hubo un error en la instanciacion", "Error",
					JOptionPane.ERROR_MESSAGE, null);
		} catch (IllegalAccessException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Acceso Ilegal a la Clase",
					"Error", JOptionPane.ERROR_MESSAGE, null);
		} catch (UnsupportedLookAndFeelException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Estilo no Soportado", "Error",
					JOptionPane.ERROR_MESSAGE, null);
		}
		initialize();
	}

	private void initialize() {
		calendar = new GregorianCalendar();
		lblNombre = new JLabel();
		lblNombre.setBounds(new Rectangle(6, 11, 50, 15));
		lblNombre.setFont(new Font("Arial", Font.PLAIN, 12));
		lblNombre.setText("Nombre:");
		this.setSize(449, 451);
		this.setLayout(null);
		this.add(lblNombre, null);
		this.add(getTxtNombre(), null);
		this.setBackground(new Color(212, 208, 200));
		this.add(getPanelDeHorario(), null);
		this.add(getBtnAceptar(), null);
		this.add(getBtnCancelar(), null);

	}

	private JTextField getTxtNombre() {
		if (txtNombre == null) {
			txtNombre = new JTextField();
			txtNombre.setBounds(new Rectangle(58, 10, 383, 20));
			txtNombre.setBorder(BorderFactory.createLineBorder(Color.black, 1));
		}
		return txtNombre;
	}

	private JPanel getPanelDeHorario() {
		if (panelDeHorario == null) {
			panelDeHorario = new JPanel();
			panelDeHorario.setLayout(null);
			panelDeHorario.setBounds(new Rectangle(6, 41, 437, 366));
			panelDeHorario.setBorder(BorderFactory.createCompoundBorder(
					BorderFactory.createEmptyBorder(0, 0, 0, 0), BorderFactory
							.createTitledBorder(null, "Horario",
									TitledBorder.LEFT,
									TitledBorder.DEFAULT_POSITION, new Font(
											"Courier New", Font.PLAIN, 12),
									new Color(51, 51, 51))));
			panelDeHorario.add(getTbpHorario(), null);
		}
		return panelDeHorario;
	}

	private JTabbedPane getTbpHorario() {
		if (tbpHorario == null) {
			tbpHorario = new JTabbedPane();
			tbpHorario.setBounds(new Rectangle(9, 20, 417, 338));
			tbpHorario.add("Horarios", getPanelSeleccionHorario());

		}
		return tbpHorario;
	}

	private JPanel getLinea() {
		if (linea == null) {
			linea = new JPanel();
			linea.setLayout(new GridBagLayout());
			linea.setBounds(new Rectangle(7, 54, 396, 1));
			linea.setBorder(BorderFactory.createLineBorder(Color.black, 1));
		}
		return linea;
	}

	private JPanel getPanelSeleccionHorario() {
		if (panelSeleccionHorario == null) {
			lblAyda = new JLabel();
			lblAyda.setBounds(new Rectangle(24, 257, 329, 36));
			lblAyda.setFont(new Font("Arial", Font.PLAIN, 10));
			lblAyda.setIcon(new ImageIcon(
					"D:/workspace/NetPlusSystem/lib/images/bombillo.png"));
			lblAyda
					.setText("Si no esta Seguro de como debe definir un horario, presione F1 ");
			lblSalida = new JLabel();
			lblSalida.setBounds(new Rectangle(306, 33, 54, 21));
			lblSalida.setText("Salida");
			lblSalida.setFont(new Font("Arial", Font.PLAIN, 12));
			lblEntrada = new JLabel();
			lblEntrada.setBounds(new Rectangle(223, 33, 54, 21));
			lblEntrada.setText("Entrada");
			lblEntrada.setFont(new Font("Arial", Font.PLAIN, 12));
			lblDia = new JLabel();
			lblDia.setBounds(new Rectangle(7, 33, 30, 21));
			lblDia.setText("Dia");
			lblDia.setFont(new Font("Arial", Font.PLAIN, 12));
			lblTrabajo = new JLabel();
			lblTrabajo.setBounds(new Rectangle(223, 8, 53, 23));
			lblTrabajo.setText("Trabajo");
			lblTrabajo.setFont(new Font("Arial", Font.BOLD, 12));
			panelSeleccionHorario = new JPanel();
			panelSeleccionHorario.setLayout(null);
			panelSeleccionHorario.add(getLinea(), null);
			panelSeleccionHorario.add(lblTrabajo, null);
			panelSeleccionHorario.add(lblDia, null);
			panelSeleccionHorario.add(lblEntrada, null);
			panelSeleccionHorario.add(lblSalida, null);
			panelSeleccionHorario.add(getBtnToggleLunes(), null);
			panelSeleccionHorario.add(getBtnToggleMartes(), null);
			panelSeleccionHorario.add(getBtnToggleMiercoles(), null);
			panelSeleccionHorario.add(getBtnToggleJueves(), null);
			panelSeleccionHorario.add(getBtnToggleViernes(), null);
			panelSeleccionHorario.add(getBtnToggleSabado(), null);
			panelSeleccionHorario.add(getBtnToggleDomingo(), null);
			panelSeleccionHorario.add(getPanelLimitesDeDia(), null);
			panelSeleccionHorario.add(getPanelTrabajo(), null);
			panelSeleccionHorario.add(lblAyda, null);
		}
		return panelSeleccionHorario;
	}

	private JToggleButton getBtnToggleLunes() {
		if (btnToggleLunes == null) {
			btnToggleLunes = new JToggleButton();
			btnToggleLunes.setBounds(new Rectangle(7, 61, 78, 23));
			btnToggleLunes.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleLunes.setText(dias[indice++].toString());
			btnToggleLunes.setSelected(false);
			btnToggleLunes
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleLunes.isSelected()) {
								spinnerInicioLunes.setVisible(true);

								spinnerInicioTrabajoLunes.setVisible(true);
								spinnerFinTrabajoLunes.setVisible(true);

							} else {
								spinnerInicioLunes.setVisible(false);

								spinnerInicioTrabajoLunes.setVisible(false);
								spinnerFinTrabajoLunes.setVisible(false);
							}
						}
					});
		}
		return btnToggleLunes;
	}

	private JToggleButton getBtnToggleMartes() {
		if (btnToggleMartes == null) {
			btnToggleMartes = new JToggleButton();
			btnToggleMartes.setBounds(new Rectangle(7, 87, 78, 23));
			btnToggleMartes.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleMartes.setText(dias[indice++].toString());
			btnToggleMartes.setSelected(false);
			btnToggleMartes
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleMartes.isSelected()) {
								spinnerInicioMartes.setVisible(true);
								spinnerInicioTrabajoMartes.setVisible(true);
								spinnerFinTrabajoMartes.setVisible(true);

							} else {
								spinnerInicioMartes.setVisible(false);

								spinnerInicioTrabajoMartes.setVisible(false);
								spinnerFinTrabajoMartes.setVisible(false);
							}
						}
					});
		}
		return btnToggleMartes;
	}

	private JToggleButton getBtnToggleMiercoles() {
		if (btnToggleMiercoles == null) {
			btnToggleMiercoles = new JToggleButton();
			btnToggleMiercoles.setBounds(new Rectangle(7, 113, 78, 23));
			btnToggleMiercoles.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleMiercoles.setText(dias[indice++].toString());
			btnToggleMiercoles.setSelected(false);
			btnToggleMiercoles
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleMiercoles.isSelected()) {
								spinnerInicioMiercoles.setVisible(true);

								spinnerInicioTrabajoMiercoles.setVisible(true);
								spinnerFinTrabajoMiercoles.setVisible(true);
							} else {
								spinnerInicioMiercoles.setVisible(false);

								spinnerInicioTrabajoMiercoles.setVisible(false);
								spinnerFinTrabajoMiercoles.setVisible(false);
							}
						}
					});
		}
		return btnToggleMiercoles;
	}

	private JToggleButton getBtnToggleJueves() {
		if (btnToggleJueves == null) {
			btnToggleJueves = new JToggleButton();
			btnToggleJueves.setBounds(new Rectangle(7, 139, 78, 23));
			btnToggleJueves.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleJueves.setText(dias[indice++].toString());
			btnToggleJueves.setSelected(false);
			btnToggleJueves
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleJueves.isSelected()) {
								spinnerInicioJueves.setVisible(true);

								spinnerInicioTrabajoJueves.setVisible(true);
								spinnerFinTrabajoJueves.setVisible(true);
							} else {
								spinnerInicioJueves.setVisible(false);

								spinnerInicioTrabajoJueves.setVisible(false);
								spinnerFinTrabajoJueves.setVisible(false);
							}
						}
					});
		}
		return btnToggleJueves;
	}

	private JToggleButton getBtnToggleViernes() {
		if (btnToggleViernes == null) {
			btnToggleViernes = new JToggleButton();
			btnToggleViernes.setBounds(new Rectangle(7, 165, 78, 23));
			btnToggleViernes.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleViernes.setText(dias[indice++].toString());
			btnToggleViernes.setSelected(false);
			btnToggleViernes
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleViernes.isSelected()) {
								spinnerInicioViernes.setVisible(true);

								spinnerInicioTrabajoViernes.setVisible(true);
								spinnerFinTrabajoViernes.setVisible(true);
							} else {
								spinnerInicioViernes.setVisible(false);
								spinnerInicioTrabajoViernes.setVisible(false);
								spinnerFinTrabajoViernes.setVisible(false);
							}
						}
					});
		}
		return btnToggleViernes;
	}

	private JToggleButton getBtnToggleSabado() {
		if (btnToggleSabado == null) {
			btnToggleSabado = new JToggleButton();
			btnToggleSabado.setBounds(new Rectangle(7, 191, 78, 23));
			btnToggleSabado.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleSabado.setText(dias[indice++].toString());
			btnToggleSabado.setSelected(false);
			btnToggleSabado
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleSabado.isSelected()) {
								spinnerInicioSabado.setVisible(true);
								spinnerInicioTrabajoSabado.setVisible(true);
								spinnerFinTrabajoSabado.setVisible(true);
							} else {
								spinnerInicioSabado.setVisible(false);
								spinnerInicioTrabajoSabado.setVisible(false);
								spinnerFinTrabajoSabado.setVisible(false);
							}
						}
					});
		}
		return btnToggleSabado;
	}

	private JToggleButton getBtnToggleDomingo() {
		if (btnToggleDomingo == null) {
			btnToggleDomingo = new JToggleButton();
			btnToggleDomingo.setBounds(new Rectangle(7, 217, 78, 23));
			btnToggleDomingo.setFont(new Font("Arial", Font.PLAIN, 10));
			btnToggleDomingo.setText(dias[indice++].toString());
			btnToggleDomingo.setSelected(false);
			btnToggleDomingo
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							if (btnToggleDomingo.isSelected()) {
								spinnerInicioDomingo.setVisible(true);
								spinnerInicioTrabajoDomingo.setVisible(true);
								spinnerFinTrabajoDomingo.setVisible(true);
							} else {
								spinnerInicioDomingo.setVisible(false);
								spinnerInicioTrabajoDomingo.setVisible(false);
								spinnerFinTrabajoDomingo.setVisible(false);
							}
						}
					});
		}
		return btnToggleDomingo;
	}

	private JPanel getPanelLimitesDeDia() {
		if (panelLimitesDeDia == null) {
			lblLimite = new JLabel();
			lblLimite.setBounds(new Rectangle(7, 4, 110, 23));
			lblLimite.setFont(new Font("Arial", Font.BOLD, 12));
			lblLimite.setText("Cantidad Minutos");
			lblInicio = new JLabel();
			lblInicio.setBounds(new Rectangle(7, 28, 55, 21));
			lblInicio.setText("Minutos");
			lblInicio.setFont(new Font("Arial", Font.PLAIN, 12));
			panelLimitesDeDia = new JPanel();
			panelLimitesDeDia.setLayout(null);
			panelLimitesDeDia.setBounds(new Rectangle(89, 5, 123, 236));
			panelLimitesDeDia.add(getSpinnerInicioLunes(), null);

			panelLimitesDeDia.add(getSpinnerInicioMartes(), null);

			panelLimitesDeDia.add(getSpinnerInicioMiercoles(), null);

			panelLimitesDeDia.add(getSpinnerInicioJueves(), null);
			panelLimitesDeDia.add(getSpinnerInicioViernes(), null);

			panelLimitesDeDia.add(getSpinnerInicioSabado(), null);

			panelLimitesDeDia.add(getSpinnerInicioDomingo(), null);

			panelLimitesDeDia.add(lblLimite, null);
			panelLimitesDeDia.add(lblInicio, null);
			final Color color = panelLimitesDeDia.getBackground();
			panelLimitesDeDia
					.addMouseListener(new java.awt.event.MouseAdapter() {
						public void mouseExited(java.awt.event.MouseEvent e) {
							panelLimitesDeDia.setBackground(color);
						}

						public void mouseEntered(java.awt.event.MouseEvent e) {
							panelLimitesDeDia.setBackground(color);
						}
					});
		}
		return panelLimitesDeDia;
	}

	private JPanel getPanelTrabajo() {
		if (panelTrabajo == null) {
			panelTrabajo = new JPanel();
			panelTrabajo.setLayout(null);
			panelTrabajo.setBounds(new Rectangle(217, 5, 186, 237));
			panelTrabajo.add(getSpinnerInicioTrabajoLunes(), null);
			panelTrabajo.add(getSpinnerFinTrabajoLunes(), null);
			panelTrabajo.add(getSpinnerInicioTrabajoMartes(), null);
			panelTrabajo.add(getSpinnerFinTrabajoMartes(), null);
			panelTrabajo.add(getSpinnerInicioTrabajoMiercoles(), null);
			panelTrabajo.add(getSpinnerFinTrabajoMiercoles(), null);
			panelTrabajo.add(getSpinnerInicioTrabajoJueves(), null);
			panelTrabajo.add(getSpinnerFinTrabajoJueves(), null);
			panelTrabajo.add(getSpinnerInicioTrabajoViernes(), null);
			panelTrabajo.add(getSpinnerFinTrabajoViernes(), null);
			panelTrabajo.add(getSpinnerInicioTrabajoSabado(), null);
			panelTrabajo.add(getSpinnerFinTrabajoSabado(), null);
			panelTrabajo.add(getSpinnerInicioTrabajoDomingo(), null);
			panelTrabajo.add(getSpinnerFinTrabajoDomingo(), null);
		}
		return panelTrabajo;
	}

	private JSpinner getSpinnerInicioLunes() {
		if (spinnerInicioLunes == null) {
			spinnerInicioLunes = new JSpinner(ModeloNumero(0, 0, 300, 60));
			formattedFin(spinnerInicioLunes);
			spinnerInicioLunes.setVisible(false);
			spinnerInicioLunes.setBounds(new Rectangle(6, 55, 75, 23));
			spinnerInicioLunes
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoLunes,
									spinnerFinTrabajoLunes, e);
							sumarMinutos(spinnerInicioLunes,
									spinnerFinTrabajoLunes, e);
						}

					});
		}
		return spinnerInicioLunes;
	}

	private JSpinner getSpinnerInicioMartes() {
		if (spinnerInicioMartes == null) {
			spinnerInicioMartes = new JSpinner(ModeloNumero(0, 0, 300, 60));
			spinnerInicioMartes.setVisible(false);
			formattedFin(spinnerInicioMartes);
			spinnerInicioMartes.setBounds(new Rectangle(6, 81, 75, 23));
			spinnerInicioMartes
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoMartes,
									spinnerFinTrabajoMartes, e);
							sumarMinutos(spinnerInicioMartes,
									spinnerFinTrabajoMartes, e);
						}

					});
		}
		return spinnerInicioMartes;
	}

	private JSpinner getSpinnerInicioMiercoles() {
		if (spinnerInicioMiercoles == null) {
			spinnerInicioMiercoles = new JSpinner(ModeloNumero(0, 0, 300, 60));
			spinnerInicioMiercoles.setVisible(false);
			formattedFin(spinnerInicioMiercoles);
			spinnerInicioMiercoles.setBounds(new Rectangle(6, 107, 75, 23));
			spinnerInicioMiercoles
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoMiercoles,
									spinnerFinTrabajoMiercoles, e);
							sumarMinutos(spinnerInicioMiercoles,
									spinnerFinTrabajoMiercoles, e);
						}

					});
		}
		return spinnerInicioMiercoles;
	}

	private JSpinner getSpinnerInicioJueves() {
		if (spinnerInicioJueves == null) {
			spinnerInicioJueves = new JSpinner(ModeloNumero(0, 0, 300, 60));
			spinnerInicioJueves.setVisible(false);
			formattedFin(spinnerInicioJueves);
			spinnerInicioJueves.setBounds(new Rectangle(6, 133, 75, 23));
			spinnerInicioJueves
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoJueves,
									spinnerFinTrabajoJueves, e);
							sumarMinutos(spinnerInicioJueves,
									spinnerFinTrabajoJueves, e);
						}

					});
		}
		return spinnerInicioJueves;
	}

	private JSpinner getSpinnerInicioViernes() {
		if (spinnerInicioViernes == null) {
			spinnerInicioViernes = new JSpinner(ModeloNumero(0, 0, 300, 60));
			formattedFin(spinnerInicioViernes);
			spinnerInicioViernes.setVisible(false);
			spinnerInicioViernes.setBounds(new Rectangle(6, 159, 75, 23));
			spinnerInicioViernes
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoViernes,
									spinnerFinTrabajoViernes, e);
							sumarMinutos(spinnerInicioViernes,
									spinnerFinTrabajoViernes, e);
						}

					});
		}
		return spinnerInicioViernes;
	}

	private JSpinner getSpinnerInicioSabado() {
		if (spinnerInicioSabado == null) {
			spinnerInicioSabado = new JSpinner(ModeloNumero(0, 0, 300, 60));
			formattedFin(spinnerInicioSabado);
			spinnerInicioSabado.setBounds(new Rectangle(6, 185, 75, 23));
			spinnerInicioSabado.setVisible(false);
			spinnerInicioSabado
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoSabado,
									spinnerFinTrabajoSabado, e);
							sumarMinutos(spinnerInicioSabado,
									spinnerFinTrabajoSabado, e);
						}

					});
		}
		return spinnerInicioSabado;
	}

	private JSpinner getSpinnerInicioDomingo() {
		if (spinnerInicioDomingo == null) {
			spinnerInicioDomingo = new JSpinner(ModeloNumero(0, 0, 300, 60));
			formattedFin(spinnerInicioDomingo);
			spinnerInicioDomingo.setBounds(new Rectangle(6, 211, 75, 23));
			spinnerInicioDomingo.setVisible(false);
			spinnerInicioDomingo
					.addChangeListener(new javax.swing.event.ChangeListener() {
						public void stateChanged(javax.swing.event.ChangeEvent e) {
							igualarSpinner(spinnerInicioTrabajoDomingo,
									spinnerFinTrabajoDomingo, e);
							sumarMinutos(spinnerInicioDomingo,
									spinnerFinTrabajoDomingo, e);
						}
					});

		}
		return spinnerInicioDomingo;
	}

	private JSpinner getSpinnerInicioTrabajoLunes() {
		if (spinnerInicioTrabajoLunes == null) {
			spinnerInicioTrabajoLunes = new JSpinner(Modelo(calendar, 11, 60,
					1, 1));
			spinnerInicioTrabajoLunes.setVisible(false);
			spinnerInicioTrabajoLunes.setEditor(editarSpinner(
					spinnerInicioTrabajoLunes, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoLunes);
			spinnerInicioTrabajoLunes.setBounds(new Rectangle(6, 55, 75, 23));
		}
		return spinnerInicioTrabajoLunes;
	}

	private JSpinner getSpinnerFinTrabajoLunes() {
		if (spinnerFinTrabajoLunes == null) {
			spinnerFinTrabajoLunes = new JSpinner(
					Modelo(calendar, 11, 60, 1, 1));
			spinnerFinTrabajoLunes.setEditor(editarSpinner(
					spinnerFinTrabajoLunes, "hh:mm a"));
			formattedFin(spinnerFinTrabajoLunes);
			spinnerFinTrabajoLunes.setVisible(false);
			spinnerFinTrabajoLunes.setBounds(new Rectangle(86, 55, 95, 23));
		}
		return spinnerFinTrabajoLunes;

	}

	private JSpinner getSpinnerInicioTrabajoMartes() {
		if (spinnerInicioTrabajoMartes == null) {
			spinnerInicioTrabajoMartes = new JSpinner(Modelo(calendar, 11, 60,
					1, 2));
			spinnerInicioTrabajoMartes.setEditor(editarSpinner(
					spinnerInicioTrabajoMartes, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoMartes);
			spinnerInicioTrabajoMartes.setBounds(new Rectangle(6, 81, 75, 23));
			spinnerInicioTrabajoMartes.setVisible(false);
		}
		return spinnerInicioTrabajoMartes;
	}

	private JSpinner getSpinnerFinTrabajoMartes() {
		if (spinnerFinTrabajoMartes == null) {
			spinnerFinTrabajoMartes = new JSpinner(Modelo(calendar, 11, 60, 1,
					2));
			spinnerFinTrabajoMartes.setEditor(editarSpinner(
					spinnerFinTrabajoMartes, "hh:mm a"));
			formattedFin(spinnerFinTrabajoMartes);
			spinnerFinTrabajoMartes.setBounds(new Rectangle(86, 81, 95, 23));
			spinnerFinTrabajoMartes.setVisible(false);
		}
		return spinnerFinTrabajoMartes;
	}

	private JSpinner getSpinnerInicioTrabajoMiercoles() {
		if (spinnerInicioTrabajoMiercoles == null) {
			spinnerInicioTrabajoMiercoles = new JSpinner(Modelo(calendar, 11,
					60, 1, 3));
			spinnerInicioTrabajoMiercoles.setEditor(editarSpinner(
					spinnerInicioTrabajoMiercoles, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoMiercoles);
			spinnerInicioTrabajoMiercoles.setBounds(new Rectangle(6, 107, 75,
					23));
		}
		spinnerInicioTrabajoMiercoles.setVisible(false);
		return spinnerInicioTrabajoMiercoles;
	}

	private JSpinner getSpinnerFinTrabajoMiercoles() {
		if (spinnerFinTrabajoMiercoles == null) {
			spinnerFinTrabajoMiercoles = new JSpinner(Modelo(calendar, 11, 60,
					1, 3));
			spinnerFinTrabajoMiercoles.setEditor(editarSpinner(
					spinnerFinTrabajoMiercoles, "hh:mm a"));
			formattedFin(spinnerFinTrabajoMiercoles);
			spinnerFinTrabajoMiercoles
					.setBounds(new Rectangle(86, 107, 95, 23));
			spinnerFinTrabajoMiercoles.setVisible(false);
		}
		return spinnerFinTrabajoMiercoles;
	}

	private JSpinner getSpinnerInicioTrabajoJueves() {
		if (spinnerInicioTrabajoJueves == null) {
			spinnerInicioTrabajoJueves = new JSpinner(Modelo(calendar, 11, 60,
					1, 4));
			spinnerInicioTrabajoJueves.setEditor(editarSpinner(
					spinnerInicioTrabajoJueves, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoJueves);
			spinnerInicioTrabajoJueves.setBounds(new Rectangle(6, 133, 75, 23));
			spinnerInicioTrabajoJueves.setVisible(false);
		}
		return spinnerInicioTrabajoJueves;
	}

	private JSpinner getSpinnerFinTrabajoJueves() {
		if (spinnerFinTrabajoJueves == null) {
			spinnerFinTrabajoJueves = new JSpinner(Modelo(calendar, 11, 60, 1,
					4));
			spinnerFinTrabajoJueves.setEditor(editarSpinner(
					spinnerFinTrabajoJueves, "hh:mm a"));
			formattedFin(spinnerFinTrabajoJueves);
			spinnerFinTrabajoJueves.setVisible(false);
			spinnerFinTrabajoJueves.setBounds(new Rectangle(86, 133, 95, 23));
		}
		return spinnerFinTrabajoJueves;
	}

	private JSpinner getSpinnerInicioTrabajoViernes() {
		if (spinnerInicioTrabajoViernes == null) {
			spinnerInicioTrabajoViernes = new JSpinner(Modelo(calendar, 11, 60,
					1, 5));
			spinnerInicioTrabajoViernes.setEditor(editarSpinner(
					spinnerInicioTrabajoViernes, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoViernes);
			spinnerInicioTrabajoViernes.setVisible(false);
			spinnerInicioTrabajoViernes
					.setBounds(new Rectangle(6, 159, 75, 23));
		}
		return spinnerInicioTrabajoViernes;
	}

	private JSpinner getSpinnerFinTrabajoViernes() {
		if (spinnerFinTrabajoViernes == null) {
			spinnerFinTrabajoViernes = new JSpinner(Modelo(calendar, 11, 60, 1,
					5));
			spinnerFinTrabajoViernes.setEditor(editarSpinner(
					spinnerFinTrabajoViernes, "hh:mm a"));
			formattedFin(spinnerFinTrabajoViernes);
			spinnerFinTrabajoViernes.setBounds(new Rectangle(86, 159, 95, 23));
			spinnerFinTrabajoViernes.setVisible(false);
		}
		return spinnerFinTrabajoViernes;
	}

	private JSpinner getSpinnerInicioTrabajoSabado() {
		if (spinnerInicioTrabajoSabado == null) {
			spinnerInicioTrabajoSabado = new JSpinner(Modelo(calendar, 11, 60,
					1, 6));
			spinnerInicioTrabajoSabado.setEditor(editarSpinner(
					spinnerInicioTrabajoSabado, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoSabado);
			spinnerInicioTrabajoSabado.setBounds(new Rectangle(6, 185, 75, 23));
			spinnerInicioTrabajoSabado.setVisible(true);
			spinnerInicioTrabajoSabado.setVisible(false);
		}
		return spinnerInicioTrabajoSabado;
	}

	private JSpinner getSpinnerFinTrabajoSabado() {
		if (spinnerFinTrabajoSabado == null) {
			spinnerFinTrabajoSabado = new JSpinner(Modelo(calendar, 11, 60, 1,
					6));
			spinnerFinTrabajoSabado.setEditor(editarSpinner(
					spinnerFinTrabajoSabado, "hh:mm a"));
			formattedFin(spinnerFinTrabajoSabado);
			spinnerFinTrabajoSabado.setBounds(new Rectangle(86, 185, 95, 23));
			spinnerFinTrabajoSabado.setVisible(false);
		}
		return spinnerFinTrabajoSabado;
	}

	private JSpinner getSpinnerInicioTrabajoDomingo() {
		if (spinnerInicioTrabajoDomingo == null) {
			spinnerInicioTrabajoDomingo = new JSpinner(Modelo(calendar, 11, 60,
					1, 7));
			spinnerInicioTrabajoDomingo.setEditor(editarSpinner(
					spinnerInicioTrabajoDomingo, "hh:mm aa"));
			formattedInicio(spinnerInicioTrabajoDomingo);
			spinnerInicioTrabajoDomingo
					.setBounds(new Rectangle(6, 211, 75, 23));
			spinnerInicioTrabajoDomingo.setVisible(false);
		}
		return spinnerInicioTrabajoDomingo;
	}

	private JSpinner getSpinnerFinTrabajoDomingo() {
		if (spinnerFinTrabajoDomingo == null) {
			spinnerFinTrabajoDomingo = new JSpinner(Modelo(calendar, 11, 60, 1,
					7));
			spinnerFinTrabajoDomingo.setEditor(editarSpinner(
					spinnerFinTrabajoDomingo, "hh:mm a"));
			formattedFin(spinnerFinTrabajoDomingo);
			spinnerFinTrabajoDomingo.setBounds(new Rectangle(86, 211, 95, 23));
			spinnerFinTrabajoDomingo.setVisible(false);
		}
		return spinnerFinTrabajoDomingo;
	}

	private JComponent formattedInicio(JSpinner spinner) {
		if (tf == null) {
			tf = new JFormattedTextField(((JSpinner.DefaultEditor) spinner
					.getEditor()).getTextField());
			tf.setEditable(false);
			tf.setEnabled(false);
			tf.setBackground(Color.white);
		}
		return tf;
	}

	private JComponent formattedFin(JSpinner spinner) {
		tf = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField();
		tf.setEnabled(false);
		tf.setEditable(false);
		tf.setBackground(Color.white);
		return tf;
	}

	private JComponent editarSpinner(JSpinner spinner, String formato) {
		editor = new JSpinner.DateEditor(spinner, formato);
		return editor;
	}

	private SpinnerDateModel Modelo(Calendar cal, int hora, int minuto,
			int meridiano, int dia) {
		cal = new GregorianCalendar();
		cal.set(Calendar.HOUR, hora);
		cal.set(Calendar.MINUTE, minuto);
		cal.set(Calendar.AM, meridiano);
		cal.set(Calendar.DAY_OF_WEEK, dia);
		model = new SpinnerDateModel(cal.getTime(), null, null, Calendar.DATE);
		return model;
	}

	private void igualarSpinner(JSpinner inicio, JSpinner fin,
			javax.swing.event.ChangeEvent e) {
		mayor = (Date) inicio.getValue();
		fin.setValue(mayor);
	}

	private JButton getBtnAceptar() {
		if (btnAceptar == null) {
			btnAceptar = new JButton();
			btnAceptar.setBounds(new Rectangle(269, 411, 85, 26));
			btnAceptar.setText("Aceptar");
		}
		return btnAceptar;
	}

	private JButton getBtnCancelar() {
		if (btnCancelar == null) {
			btnCancelar = new JButton();
			btnCancelar.setText("Cancelar");

			btnCancelar.setBounds(new Rectangle(356, 411, 85, 26));
		}
		return btnCancelar;
	}

	private SpinnerNumberModel ModeloNumero(int valor, int min, int max,
			int paso) {
		modeloNumero = new SpinnerNumberModel(valor, min, max, paso);
		return modeloNumero;
	}

	private void sumarMinutos(JSpinner spinnerMinutos,
			JSpinner spinnerReceptor, javax.swing.event.ChangeEvent e) {
		Date valor1 = (Date) spinnerReceptor.getValue();
		valor1.setMinutes((Integer) spinnerMinutos.getValue());
		spinnerReceptor.setValue(valor1);
	}
} // @jve:decl-index=0:visual-constraint="10,10" 